package com.woniu.cloud.shopassembly.apiImpl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.woniu.cloud.api.StoreGoodApi;
import com.woniu.cloud.common.dto.Result;
import com.woniu.cloud.entity.TStoreGood;
import com.woniu.cloud.form.StoreInsertGoodForm;
import com.woniu.cloud.form.StoreUpdateGoodForm;
import com.woniu.cloud.shopassembly.service.ITGoodService;
import com.woniu.cloud.shopassembly.service.ITStoreGoodService;
import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 积分商品表 前端控制器
 * </p>
 *
 * @author hyy
 * @since 2021-09-22
 */
@RestController
@Slf4j

public class StoreGoodApiImpl implements StoreGoodApi {

    @Autowired
    private ITGoodService storeService;

    @Autowired
    private ITStoreGoodService storeGoodService;

    @Override
    @GlobalTransactional
    @GetMapping("getStoreGoodByStoreGoodId")
    public Result getStoreGoodByStoreGoodId(Integer storeGoodId) {
        log.info("通过店铺商品Id查找商品->storeGoodId:{}",storeGoodId);
        if (null==storeGoodId) {
            return Result.fail("参数异常",null);
        }
        try {
            log.info("开始查询->id:{}",storeGoodId);
            TStoreGood scoreGood=storeGoodService.getStoreGoodByStoreGoodId(storeGoodId);
            log.info("查询结果->{}",scoreGood);
            if (null!=scoreGood) {
                return Result.success("该商品存在",scoreGood);
            }
            return Result.success("该商品不存在",null);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",null);
        }
    }
    @Override
    @GlobalTransactional
    @GetMapping("getStoreGoodByStoreGoodIdAndStore")
    public Result getStoreGoodByStoreGoodId(Integer storeGoodId,Integer storeGoodGoodId) {
        log.info("通过店铺商品Id查找商品->storeGoodId:{},storeGoodGoodId:{}",storeGoodId,storeGoodGoodId);
        if (null==storeGoodId&&null==storeGoodGoodId) {
            return Result.fail("参数异常",null);
        }
        try {
            log.info("开始查询->id:{}",storeGoodId);
            TStoreGood scoreGood=storeGoodService.getStoreGoodByStoreGoodId(storeGoodId,storeGoodGoodId);
            log.info("查询结果->{}",scoreGood);
            if (null!=scoreGood) {
                return Result.success("该商品存在",scoreGood);
            }
            return Result.success("该商品不存在",null);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",null);
        }
    }

    @Override
    @GlobalTransactional
    @GetMapping("getStoreGoodByGoodName")
    public Result getStoreGoodByGoodName(String storeGoodName,Integer pageIndex) {
        log.info("通过商品名称查找商品->storeGoodName:{},pageIndex:{}",storeGoodName,pageIndex);
        if (null==storeGoodName) {
            return Result.fail("参数异常",null);
        }
        try {
            log.info("开始查询->storeGoodName:{},pageIndex:{}",storeGoodName,pageIndex);
            return storeGoodService.getStoreGoodByGoodName(storeGoodName,pageIndex);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",null);
        }

    }

    @Override
    @GlobalTransactional
    @GetMapping("getStoreGoodByStoreGoodType")
    public Result getStoreGoodByStoreGoodType(String storeGoodType,Integer pageIndex) {
        log.info("通过商品类型查找商品->storeGoodType:{},pageIndex:{}",storeGoodType,pageIndex);
        if (null==storeGoodType) {
            return Result.fail("参数异常",null);
        }
        try {
            log.info("开始查询->storeGoodType:{},pageIndex:{}",storeGoodType,pageIndex);
            return storeGoodService.getStoreGoodByStoreGoodType(storeGoodType,pageIndex);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",null);
        }
    }

    @Override
    @GlobalTransactional
    @GetMapping("getStoreGoodTypeList")
    public Result getStoreGoodTypeList() {
        log.info("商品类型集合->");
        try {
            log.info("开始查询->");
            return storeGoodService.getStoreGoodTypeList();
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",null);
        }
    }

    @Override
    @GlobalTransactional
    @PostMapping("insertStoreGood")
    public Result insertStoreGood(@RequestBody StoreInsertGoodForm storeGoodForm) {
        log.info("商品添加->storeGoodForm:{}",storeGoodForm);
        try {
            log.info("开始添加->storeGoodForm:{}",storeGoodForm);
            TStoreGood good = new TStoreGood();
            BeanUtils.copyProperties(storeGoodForm, good);
            return storeGoodService.insertGood(good);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }

    @Override
    @GlobalTransactional
    @PutMapping("updateStoreGood")
    public Result updateStoreGood(@RequestBody StoreUpdateGoodForm storeGoodForm) {
        log.info("商品信息修改->storeGoodForm:{}",storeGoodForm);
        try {
            log.info("开始修改->storeGoodForm:{}",storeGoodForm);
            TStoreGood storeGood = new TStoreGood();
            BeanUtils.copyProperties(storeGoodForm, storeGood);
            return storeGoodService.updateStoreGood(storeGood);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }

    @Override
    @GlobalTransactional
    @PutMapping("updateStoreGoodNumByStoreGoodId")
    public Result updateStoreGoodNumByStoreGoodId(Integer storeGoodId, Integer storeGoodNum) {
        log.info("商品库存修改->storeGoodId:{},goodNum:{}",storeGoodId,storeGoodNum);
        try {
            log.info("开始修改->storeGoodId:{},goodNum:{}",storeGoodId,storeGoodNum);
            return storeGoodService.updateStoreGoodNumByStoreGoodId(storeGoodId,storeGoodNum);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }

    @Override
    @GlobalTransactional
    @PutMapping("updateStoreGoodSellNumByStoreGoodId")
    public Result updateStoreGoodSellNumByStoreGoodId(Integer storeGoodId, Integer storeGoodSellNum) {
        log.info("商品销量修改->storeGoodId:{},storeGoodSellNum:{}",storeGoodId,storeGoodSellNum);
        try {
            log.info("开始修改->storeGoodId:{},storeGoodSellNum:{}",storeGoodId,storeGoodSellNum);
            return storeGoodService.updateStoreGoodSellNumByStoreGoodId(storeGoodId,storeGoodSellNum);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }

    @Override
    @GlobalTransactional
    @DeleteMapping("deleteStoreGoodByStoreGoodId")
    public Result deleteStoreGoodByStoreGoodId(Integer storeGoodId) {
        log.info("根据商品id删除商品->goodId:{}",storeGoodId);
        try {
            log.info("开始删除->goodId:{}",storeGoodId);
            return storeGoodService.deleteStoreGoodByStoreGoodId(storeGoodId);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }
}
